import Axios from 'axios'
import { Loading } from 'element-ui'
import router from "@/router/index"
// 创建一个Axios的实例化对象
let axios = Axios.create({
  timeout: 10000, //响应超时
  baseURL: process.env.VUE_APP_BASE_URL // 接口的基础路径。"/", "/api"这样的前缀开头。
});

let loadingInstance = null;

axios.interceptors.request.use(
  requestConfig => {
    let token = sessionStorage.getItem('token');
    token && (requestConfig.headers['Authorization'] = token);
    // 请求时，显示loading动画
    loadingInstance = Loading.service({
      fullscreen: true,
      text: '你的小妹儿正在给你做饭....',
      background: 'rgba(0,0,0,0.1)'
    });
    // 返回请求的配置对象
    return requestConfig;
  },
  error => Promise.reject(error)
);

axios.interceptors.response.use(
  res => {
    loadingInstance.close(); // 关闭加载的动画
    // return res; 
    return res.data;  // 在组件里面，使用数据时，就少写一个data。 
  },
  error => {
    loadingInstance.close();
    let _resp = error.response;
    // console.log('请求失败：', _resp);
    switch (_resp.status) {
      case 401: // token过期，自动跳到登录去
        sessionStorage.clear()
        return router.push("/login")  // 自动到登录页
    }

    return Promise.reject(error.response.data)

  }
);

export default axios;